#ifndef COLLECTINGBOX_H
#define COLLECTINGBOX_H

#include <QObject>
#include <QThread>
#include "modbus.h"
class CollectingBox : public QObject
{
    Q_OBJECT
public:
    explicit CollectingBox(QObject *parent = nullptr);
    ~CollectingBox();
    Modbus  *modBusDevice;                              //modbus 设备
    QThread mThread;                                    //子线程
    float   boxVoltage=0;                               //读取到的电压值
    int     slaveID=0;                                  //从机地址
    bool    hasRecv=false;                              //是否接收到数据

    void OpenDevice();                                  //外部调用       使得内部在子线程中打开端口
    void CloseDevice();                                 //外部调用       关闭端口
    void ReadVoltageInformation();                      //外部调用       让内部开始读取电压信号
    float GetRecvVoltageValue();                        //外部调用       获取读取到的电压值。

    void SlotInit();                                    //初始化信号与槽
signals:
    void ToCreateDevice();                              //创建modbus对象的信号
    void ToOpenDevice();                                //让内部在子线程中打开串口信号
    void ToCloseDevice();                               //对象在子线程中关闭端口的信号
    void ToReadFunction(ushort adress,ushort sum);      //让内部读取adress地址的sum数量的寄存器的信号
    void ShowOpenComWidget(QString);                    //让外部显示打开串口成功与失败的弹窗信息的信号
public slots:
    void Slot_CreateDevice();                           //在子线程中创建modbus对象
    void Slot_CloseDevice();                            //具体执行在子线程中关闭端口的槽函数
    void Slot_OpenDevice();                             //在子线程中打开端口
    void Slot_ReadVoltage(ushort,ushort);               //在子线程中读取电压
};

#endif // COLLECTINGBOX_H
